package cn.com.miao.lynx.plugin.storage.service;

import cn.com.miao.lynx.plugin.storage.exception.StorageException;
import cn.com.miao.lynx.plugin.storage.model.StorageResponse;

import java.io.InputStream;

/**
 * StorageService
 *
 * @title: StorageService
 * @description:
 * @author: dengmiao
 * @create: 2020-01-10 14:55
 **/
public interface StorageService {

    /**
     * 流式上传
     * @param objectName 文件对象名称
     * @param bytes      流数组
     * @return 响应实体
     * @throws StorageException 对象存储异常对象
     */
    StorageResponse upload(String objectName, byte[] bytes) throws StorageException;

    /**
     * 文件流方式上传
     *
     * @param objectName  文件对象名称
     * @param inputStream 文件输入流
     * @return 响应实体
     * @throws StorageException 对象存储异常对象
     */
    StorageResponse upload(String objectName, InputStream inputStream) throws StorageException;

    /**
     * 本地文件路径方式上传
     * @param objectName 文件对象名称
     * @param localFile  文件路径
     * @return 响应实体
     * @throws StorageException 对象存储异常对象
     */
    StorageResponse upload(String objectName, String localFile) throws StorageException;

    /**
     * 下载文件写入本地文件
     * @param objectName 存储对象名称
     * @param localFile  本地文件路径
     * @throws StorageException 对象存储异常对象
     */
    void download(String objectName, String localFile) throws StorageException;

    /**
     * 删除文件
     * @param objectName 文件对象名称
     * @throws StorageException 对象存储异常对象
     */
    void delete(String objectName) throws StorageException;
}
